package Controller;

import java.util.ArrayList;
import java.util.List;

import Beans.NotaDevolucionBean;
import DAO.HibernateNotaDevolucionDAO;
import DTO.NotaDevolucionDTO;
import Model.NotaDevolucion;

public class AdministradorNotaDevolucion {
private static AdministradorNotaDevolucion instancia;
	
	private AdministradorNotaDevolucion(){
		
	}
	
	public static AdministradorNotaDevolucion getInstancia(){
		if(instancia==null){
			instancia=new AdministradorNotaDevolucion();
		}
		return instancia;
	}

	public List<NotaDevolucionBean> fromModelToBean(List<NotaDevolucion> notaDevolucions) {
		List<NotaDevolucionBean> notaDevolucionsBean=new ArrayList<NotaDevolucionBean>();
		for (NotaDevolucion notaDevolucion : notaDevolucions) {
			notaDevolucionsBean.add(fromModelTOBean(notaDevolucion));
		}
		return notaDevolucionsBean;
	}

	public NotaDevolucionBean fromModelTOBean(NotaDevolucion notaDevolucion) {
		NotaDevolucionBean notaDevolucionBean=null;
		if(notaDevolucion!=null){
		notaDevolucionBean=new NotaDevolucionBean();
		notaDevolucion.setId(notaDevolucion.getId());
		notaDevolucionBean.setEstado(notaDevolucion.getEstado());
		notaDevolucionBean.setFecha(notaDevolucion.getFecha());
		notaDevolucionBean.setItems(AdministradorItemOC.getInstancia().fromModelTOBean(notaDevolucion.getItems()));
		notaDevolucionBean.setProv(AdministradorProovedor.getInstancia().fromModelTOBean(notaDevolucion.getProv()));
		}
		return notaDevolucionBean;
	}

	public List<NotaDevolucion> fromDTOTOModel(List<NotaDevolucionDTO> notaDevolucionsDTO) {
		List<NotaDevolucion> notaDevolucions=new ArrayList<NotaDevolucion>();
		for (NotaDevolucionDTO notaDevolucionDTO : notaDevolucionsDTO) {
			notaDevolucions.add(fromDTOTOModel(notaDevolucionDTO));
		}
		return notaDevolucions;
	}
	public NotaDevolucion fromDTOTOModel(NotaDevolucionDTO notaDevolucionDTO) {
		NotaDevolucion notaDevolucion=null;
		if(notaDevolucionDTO!=null){
		notaDevolucion=new NotaDevolucion();
		notaDevolucion.setId(notaDevolucionDTO.getId());
		notaDevolucion.setEstado(notaDevolucionDTO.getEstado());
		notaDevolucion.setFecha(notaDevolucionDTO.getFecha());
		notaDevolucion.setItems(AdministradorItemOC.getInstancia().fromDTOTOModel(notaDevolucionDTO.getItems()));
		notaDevolucion.setProv(AdministradorProovedor.getInstancia().fromDTOTOModel(notaDevolucionDTO.getProv()));
		
		}
		return notaDevolucion;
	}

	
	public List<NotaDevolucionDTO> fromModelTODTO(List<NotaDevolucion> notaDevolucions) {
		List<NotaDevolucionDTO> notaDevolucionsDTO=new ArrayList<NotaDevolucionDTO>();
		for (NotaDevolucion notaDevolucion : notaDevolucions) {
			notaDevolucionsDTO.add(fromModelTODTO(notaDevolucion));
		}
		return notaDevolucionsDTO;
	}
	public NotaDevolucionDTO fromModelTODTO(NotaDevolucion notaDevolucion) {
		NotaDevolucionDTO notaDevolucionDTO=null;
		if(notaDevolucion!=null){
			notaDevolucionDTO=new NotaDevolucionDTO();
			notaDevolucionDTO.setId(notaDevolucion.getId());
			notaDevolucionDTO.setEstado(notaDevolucion.getEstado());
			notaDevolucionDTO.setFecha(notaDevolucion.getFecha());
			notaDevolucionDTO.setItems(AdministradorItemOC.getInstancia().fromModelTODTO(notaDevolucion.getItems()));
			notaDevolucionDTO.setProv(AdministradorProovedor.getInstancia().fromModelTODTO(notaDevolucion.getProv()));
		
		}
		return notaDevolucionDTO;
	}
	
	public List<NotaDevolucion> fromBeanTOModel(List<NotaDevolucionBean> notaDevolucionsBean) {
		List<NotaDevolucion> notaDevolucions=new ArrayList<NotaDevolucion>();
		for (NotaDevolucionBean notaDevolucionBean : notaDevolucionsBean) {
			notaDevolucions.add(fromBeanTOModel(notaDevolucionBean));
		}
		return notaDevolucions;
	}

	public NotaDevolucion fromBeanTOModel(NotaDevolucionBean notaDevolucionBean) {
		NotaDevolucion notaDevolucion=null;
		if(notaDevolucionBean!=null){
			notaDevolucion=new NotaDevolucion();
			notaDevolucion.setId(notaDevolucionBean.getId());
			notaDevolucion.setEstado(notaDevolucionBean.getEstado());
			notaDevolucion.setFecha(notaDevolucionBean.getFecha());
			notaDevolucion.setItems(AdministradorItemOC.getInstancia().fromBeanTOModel(notaDevolucionBean.getItems()));
			notaDevolucion.setProv(AdministradorProovedor.getInstancia().fromBeanTOModel(notaDevolucionBean.getProv()));
		}
		return notaDevolucion;
	}

	public void grabarNotaDevolucion(NotaDevolucion notaDevolucion) {
		NotaDevolucionBean fb=fromModelTOBean(notaDevolucion);
		HibernateNotaDevolucionDAO.getInstancia().grabarNotaDevolucion(fb);
		
	}
	
	public NotaDevolucion buscarNotaDevolucion(NotaDevolucion f){
		NotaDevolucionBean fb=fromModelTOBean(f);
		fb=HibernateNotaDevolucionDAO.getInstancia().buscarNotaDevolucion(fb);
		return fromBeanTOModel(fb);
	}

	public List<NotaDevolucionBean> fromModelTOBean(
			List<NotaDevolucion> notas) {
		List<NotaDevolucionBean> notasb=new ArrayList<NotaDevolucionBean>();
		for (NotaDevolucion notaDevolucion: notas) {
			NotaDevolucionBean notab=fromModelTOBean(notaDevolucion);
			notasb.add(notab);
		}
		return notasb;
	}
}
